package org.itsky.study.test1;

/**
 * @Author sky
 * @Site cmtianxie163.com 2020/4/10 10:25
 */

import java.util.Comparator;
import java.util.function.Consumer;

/**
 * 替代匿名内部类
 *
 * 启动一个线程 控制台输出一句话 一个线程启动了
 */

public class lambdaTest {
    public static void main(String[] args) {
        //方式一 ：实现runable接口
        MyRunnable myRunable = new MyRunnable();
        Thread t1 = new Thread(myRunable);
        t1.start();

        //方式二 ：匿名内部类
        new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("Hello sky !!!");
            }
        }).start();

        //方式三：lambda
        new Thread(() -> System.out.println("Hello sky !!!")).start();

        //语法格式一：无参，无返回值
        Runnable r = () -> {
            System.out.println("Hello Lambda !");
        };

        //语法格式二：一个参数 没有返回值
        Consumer<String> con1 = (String str) -> {
            System.out.println(str);
        };

        //语法格式三：数据类型可以省略，可由编译器推断得出，称为 “类型推断”
        Consumer<String> con2 = (str) -> {
            System.out.println(str);
        };

        //语法格式四：若只有一个参数，参数的小括号可以省略
        Consumer<String> con3 = str -> {
            System.out.println(str);
        };

        //语法格式五：多个参数 并有返回值
        Comparator<Integer> com = (x,y) -> {
            System.out.println("两个参数，有返回值");
            return Integer.compare(x,y);
        };

        //语法格式六：当只有一条语句时，return和{} 都可以省略
        Comparator<Integer> com2 = (x,y) -> Integer.compare(x,y);



    }
}
